include(FindPkgConfig)
function(find_feature FEATURE_NAME FEATURE_REQUIRES)
	if (NOT ${FEATURE_NAME})
		return()
	endif()
	if (DISABLE_DEPS)
		set(${FEATURE_NAME} OFF PARENT_SCOPE)
		return()
	endif()
	foreach(REQUIRE ${FEATURE_REQUIRES})
		if(NOT ${REQUIRE}_FOUND)
			find_package(${REQUIRE} QUIET)
			if(NOT ${REQUIRE}_FOUND)
				pkg_search_module(${REQUIRE} ${REQUIRE})
				if (NOT ${REQUIRE}_FOUND)
					message(WARNING "Requested module ${REQUIRE} missing for feature ${FEATURE_NAME}. Feature disabled.")
					set(${FEATURE_NAME} OFF PARENT_SCOPE)
					return()
				endif()
			endif()
		endif()
		string(TOUPPER ${REQUIRE} UREQUIRE)
		set(${UREQUIRE}_CFLAGS_OTHER ${${REQUIRE}_CFLAGS_OTHER} PARENT_SCOPE)
		set(${UREQUIRE}_FOUND ${${REQUIRE}_FOUND} PARENT_SCOPE)
		set(${UREQUIRE}_INCLUDE_DIRS ${${REQUIRE}_INCLUDE_DIRS} PARENT_SCOPE)
		set(${UREQUIRE}_VERSION_STRING ${${REQUIRE}_VERSION_STRING} PARENT_SCOPE)
		if (APPLE)
			set(IS_FRAMEWORK OFF)
			set(LIBS)
			foreach(LIB IN LISTS ${REQUIRE}_LIBRARIES)
				if(LIB STREQUAL "-framework")
					set(IS_FRAMEWORK ON)
				elseif(IS_FRAMEWORK)
					list(APPEND LIBS "-framework ${LIB}")
					set(IS_FRAMEWORK OFF)
				else()
					list(APPEND LIBS ${LIB})
				endif()
			endforeach()
			set(${UREQUIRE}_LIBRARIES ${LIBS} PARENT_SCOPE)
		else()
			set(${UREQUIRE}_LIBRARIES ${${REQUIRE}_LIBRARIES} PARENT_SCOPE)
		endif()
		set(${UREQUIRE}_LIBRARY_DIRS ${${REQUIRE}_LIBRARY_DIRS} PARENT_SCOPE)
		set(${UREQUIRE}_LDFLAGS_OTHER ${${REQUIRE}_LDFLAGS_OTHER} PARENT_SCOPE)
	endforeach()
endfunction()